Skip to content

feat(storage): reserve the worker layout for Longhorn V2 - #5689

Merged
devantler merged 1 commit into
mainfrom
claude/longhorn-talos-layout-5655
Nov 1, 2026
Merged

devantler merged 1 commit into
mainfrom
claude/longhorn-talos-layout-5655

Conversation

@devantler

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Why

Moving storage to Longhorn V2 needs room on each worker's disk that V1 does not use. That layout reaches every worker through shared config, so it gets its own review instead of sharing one with the tool code in #5686.

What

Workers now declare a 96 GiB encrypted raw partition and cap their temporary partition so the room stays free. Their default-disk label changes from true to config, with the V2 disk defaults beside it.

What changes when this deploys

  • Running workers: the kubelet restarts for its new label and nothing reboots. Partitions stay as they are, so the new raw volume cannot provision until the preparation step resets a worker. Expect it to report a failed or waiting state until then.
  • New compute overflow nodes: these get the new layout straight away, so a cx43 keeps about 56 GiB for its temporary partition instead of about 160 GiB.
  • A permanent worker rebuilt after this: it gets the V2 disk and no V1 disk, while the V2 engine is still off. Avoid rebuilding one outside the migration.

Checked

  • Rendered the worker config at KSail's pinned Talos library (v1.14.0-alpha.2). RawVolumeConfig and the EPHEMERAL VolumeConfig both load, and EPHEMERAL keeps its encryption after the merge. talosctl v1.14.2 also accepts the render for cloud mode.
  • Read Talos v1.13.12's rule for applying config without a reboot. It compares only the main document, and the label, annotation and kubelet fields are all allowed.
  • Read live: nothing selects the label's old value. The Longhorn node selector setting is empty and no workload selects the label. The client maintenance check accepts both values.

Not proven

Nothing here has run on a real node. That covers how Talos reports the raw volume on a full disk, whether 56 GiB is enough for an overflow node's images, and what Longhorn does with the annotation. Read all three back after the first deploy, on one permanent worker and on the first new overflow node. The negative size limit is only exercised on a fresh or reset disk.

Merge after #5686.

Part of #5655

Workers now declare a 96 GiB encrypted raw partition, cap EPHEMERAL to leave room
for it, and carry the default-disk label as config with the V2 disk defaults.
Existing partitions do not change until the preparation step resets a worker.

Part of #5655

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor
Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 19 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 3d0a15c and c143fb2.

Files selected for processing: 6
  • k8s/clusters/prod/bootstrap/config-map.yaml
  • k8s/providers/hetzner/infrastructure/cluster-policies/restrict-storage-to-baseline-workers.yaml
  • talos/workers/label-nodes.yaml
  • talos/workers/mount-longhorn-data.yaml
  • talos/workers/reserve-ephemeral-space.yaml
  • talos/workers/reserve-longhorn-data.yaml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-01T18:08:04.928421Z c143fb2 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

Reviewed commit: c143fb244d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor
Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 19 minutes.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: c143fb244d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Evaluation at c143fb2. I read this as the person who has to live with the deploy, with one question the description does not answer: this adds the label through machine.nodeLabels as well as the kubelet argument, so does an overflow node still lose it?

It does. KSail's autoscaler worker config removes the label from both places (autoscaler_worker_config.go: delete on MachineNodeLabels, then stripKubeletStorageLabel), at KSail main and at v7.205.3, the version #5679 replaces. The annotation stays on those nodes, and Longhorn only reads it on a labelled node.

Review: Codex clean at this head; CodeRabbit is rate limited and has reviewed nothing here. CI is green, with no open threads. This run read the code only and did not run the change. The three items under "Not proven" stay open until the first deploy.

Promoting so it is ready. It still merges after #5686.

@devantler
devantler marked this pull request as ready for review November 1, 2026 18:13
@devantler
devantler added this pull request to the merge queue Nov 1, 2026
Merged via the queue into main with commit 7332f5c Nov 1, 2026
50 checks passed
@devantler
devantler deleted the claude/longhorn-talos-layout-5655 branch November 1, 2026 22:10
@github-project-automation github-project-automation Bot moved this from 🫴 Ready to ✅ Done in 🌊 Project Board Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

1 participant